﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using Microsoft.Practices.EnterpriseLibrary.Common;
using System.Configuration;
using Insifo.BE.Gen;

namespace Insifo.DL.Gen
{
    public class DLPersona : DLTransaction, IDLTransaccion<BEPersona>
    {
        #region  Members


        /// <summary>
        /// Método obtiene los Origenes de Datos Activos
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet Listar(BEPersona pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Listar");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_NombreBusqueda", DbType.String, pbe.NombreBusqueda);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSpring", DbType.Int32, pbe.IdSpring);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@ai_Pagina", DbType.Int32, pbe.Pagina);
                ds = sqlDB.ExecuteDataSet(dbCmd);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                dbCmd.Dispose();
            }
            return ds;
        }
        public DataSet ListarTabla(BEPersona pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Listar_Tabla");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_EsCliente", DbType.String, pbe.EsCliente);
                sqlDB.AddInParameter(dbCmd, "@as_EsProveedor", DbType.String, pbe.EsProveedor);
                sqlDB.AddInParameter(dbCmd, "@as_EsEmpleado", DbType.String, pbe.EsEmpleado);
                sqlDB.AddInParameter(dbCmd, "@as_EsOtro", DbType.String, pbe.EsOtro);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionTrabajo", DbType.String, pbe.SituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@as_Busqueda", DbType.String, pbe.Busqueda);
                sqlDB.AddInParameter(dbCmd, "@as_OrdenColumna", DbType.String, pbe.OrdenColumna);
                sqlDB.AddInParameter(dbCmd, "@as_OrdenDireccion", DbType.String, pbe.OrdenDireccion);
	            sqlDB.AddInParameter(dbCmd, "@as_MostrarDesde", DbType.String, pbe.MostrarFilaDesde);
                sqlDB.AddInParameter(dbCmd, "@as_FilasAMostrar", DbType.String, pbe.FilasAMostrar);
	
                ds = sqlDB.ExecuteDataSet(dbCmd);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                //if (dbCmd.Connection.State == ConnectionState.Open)
                //dbCmd.Connection.Close();
                dbCmd.Dispose();
            }
            return ds;
        }
        /// <summary>
        /// Método obtiene los Origenes de Datos Activos
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet ListarPorTipo(BEPersona pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Listar_X_Tipo");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_NombreBusqueda", DbType.String, pbe.NombreBusqueda);
                sqlDB.AddInParameter(dbCmd, "@as_EsEmpleado", DbType.String, pbe.EsEmpleado);
                sqlDB.AddInParameter(dbCmd, "@as_EsCliente", DbType.String, pbe.EsCliente);
                sqlDB.AddInParameter(dbCmd, "@as_EsProveedor", DbType.String, pbe.EsProveedor);
                sqlDB.AddInParameter(dbCmd, "@as_EsOtro", DbType.String, pbe.EsOtro);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@ai_Pagina", DbType.Int32, pbe.Pagina);
                ds = sqlDB.ExecuteDataSet(dbCmd);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                //if (dbCmd.Connection.State == ConnectionState.Open)
                //dbCmd.Connection.Close();
                dbCmd.Dispose();
            }
            return ds;
        }
        
        /// <summary>
        /// Método obtiene del objeto
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        /// 
        public BEPersona Obtener_Mant(BEPersona pbe)
        {
            BEPersona be = new BEPersona();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Obtener");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@ai_IdPersona", DbType.Int32, pbe.IdPersona);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.CodigoPersona = DBValue.Get<String>(reader, "CodigoPersona");
                        be.ApellidoPaterno = DBValue.Get<String>(reader, "ApellidoPaterno");
                        be.ApellidoMaterno = DBValue.Get<String>(reader, "ApellidoMaterno");
                        be.Nombres = DBValue.Get<String>(reader, "Nombres");
                        be.NombreCompleto = DBValue.Get<String>(reader, "NombreCompleto");
                        be.NombreBusqueda = DBValue.Get<String>(reader, "NombreBusqueda");
                        be.FechaNacimiento = DBValue.Get<DateTime>(reader, "FechaNacimiento") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaNacimiento");
                        be.Sexo = DBValue.Get<String>(reader, "Sexo");
                        be.Nacionalidad = DBValue.Get<String>(reader, "Nacionalidad");
                        be.EstadoCivil = DBValue.Get<String>(reader, "EstadoCivil");
                        be.CorreoElectronico = DBValue.Get<String>(reader, "CorreoElectronico");
                        be.Telefono1 = DBValue.Get<String>(reader, "Telefono1");
                        be.Telefono2 = DBValue.Get<String>(reader, "Telefono2");
                        be.Telefono3 = DBValue.Get<String>(reader, "Telefono3");
                        be.Celular1 = DBValue.Get<String>(reader, "Celular1");
                        be.Celular2 = DBValue.Get<String>(reader, "Celular2");
                        be.Celular3 = DBValue.Get<String>(reader, "Celular3");
                        be.Fax = DBValue.Get<String>(reader, "Fax");
                        be.TipoDocumento = DBValue.Get<String>(reader, "TipoDocumento");
                        be.Documento = DBValue.Get<String>(reader, "Documento");
                        be.DocumentoFiscal = DBValue.Get<String>(reader, "DocumentoFiscal");
                        be.EsCliente = DBValue.Get<String>(reader, "EsCliente");
                        be.EsEmpleado = DBValue.Get<String>(reader, "EsEmpleado");
                        be.EsProveedor = DBValue.Get<String>(reader, "EsProveedor");
                        be.EsOtro = DBValue.Get<String>(reader, "EsOtro");
                        be.ClasePersona = DBValue.Get<String>(reader, "ClasePersona");
                        be.IdGrupo = DBValue.Get<Int32>(reader, "IdGrupo");
                        be.CodigoBarras = DBValue.Get<String>(reader, "CodigoBarras");
                        be.Estado = DBValue.Get<String>(reader, "Estado");
                        be.UsuarioCreacion = DBValue.Get<String>(reader, "UsuarioCreacion");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        be.UsuarioModificacion = DBValue.Get<String>(reader, "UsuarioModificacion");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        be.IdPaisNacimiento = DBValue.Get<Int32>(reader, "IdPaisNacimiento");
                        be.IdDepartamentoNacimiento = DBValue.Get<Int32>(reader, "IdDepartamentoNacimiento");
                        be.IdProvinciaNacimiento = DBValue.Get<Int32>(reader, "IdProvinciaNacimiento");
                        be.LugarNacimiento = DBValue.Get<String>(reader, "LugarNacimiento");
                        be.NacionalidadMaterna = DBValue.Get<String>(reader, "NacionalidadMaterna");
                        be.NacionalidadJuridica = DBValue.Get<String>(reader, "NacionalidadJuridica");
                        be.CodigoLD = DBValue.Get<String>(reader, "CodigoLD");
                        be.TipoLicenciaConducir = DBValue.Get<String>(reader, "TipoLicenciaConducir");
                        be.NumeroLicencia = DBValue.Get<String>(reader, "NumeroLicencia");                        
                        be.FechaExpiracionLicencia = DBValue.Get<DateTime>(reader, "FechaExpiracionLicencia") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaExpiracionLicencia");
                        be.NombreEmergencia1 = DBValue.Get<String>(reader, "NombreEmergencia1");
                        be.NombreEmergencia2 = DBValue.Get<String>(reader, "NombreEmergencia2");
                        be.DireccionEmergencia1 = DBValue.Get<String>(reader, "DireccionEmergencia1");
                        be.DireccionEmergencia2 = DBValue.Get<String>(reader, "DireccionEmergencia2");
                        be.TelefonoEmergencia1 = DBValue.Get<String>(reader, "TelefonoEmergencia1");
                        be.TelefonoEmergencia2 = DBValue.Get<String>(reader, "TelefonoEmergencia2");
                        be.ParentescoEmergencia1 = DBValue.Get<String>(reader, "ParentescoEmergencia1");
                        be.ParentescoEmergencia2 = DBValue.Get<String>(reader, "ParentescoEmergencia2");
                        be.CelularEmergencia1 = DBValue.Get<String>(reader, "CelularEmergencia1");
                        be.CelularEmergencia2 = DBValue.Get<String>(reader, "CelularEmergencia2");
                        be.PoseeAuto = DBValue.Get<String>(reader, "PoseeAuto");

                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        public BEPersona Obtener(BEPersona pbe)
        {
            BEPersona be = new BEPersona();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Obtener");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@ai_IdPersona", DbType.Int32, pbe.IdPersona);
                sqlDB.AddInParameter(dbCmd, "@as_Documento", DbType.String, pbe.Documento);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdSpring = DBValue.Get<Int32>(reader, "IdSpring");
                        be.IdPersona = DBValue.Get<Int32>(reader, "IdPersona");
                        be.CodigoPersona = DBValue.Get<String>(reader, "CodigoPersona");
                        be.ApellidoPaterno = DBValue.Get<String>(reader, "ApellidoPaterno");
                        be.ApellidoMaterno = DBValue.Get<String>(reader, "ApellidoMaterno");
                        be.Nombres = DBValue.Get<String>(reader, "Nombres");
                        be.NombreCompleto = DBValue.Get<String>(reader, "NombreCompleto");
                        be.NombreBusqueda = DBValue.Get<String>(reader, "NombreBusqueda");
                        be.FechaNacimiento = DBValue.Get<DateTime>(reader, "FechaNacimiento") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaNacimiento");
                        be.Sexo = DBValue.Get<String>(reader, "Sexo");
                        be.Nacionalidad = DBValue.Get<String>(reader, "Nacionalidad");
                        be.EstadoCivil = DBValue.Get<String>(reader, "EstadoCivil");
                        be.CorreoElectronico = DBValue.Get<String>(reader, "CorreoElectronico");
                        be.Telefono1 = DBValue.Get<String>(reader, "Telefono1");
                        be.Telefono2 = DBValue.Get<String>(reader, "Telefono2");
                        be.Telefono3 = DBValue.Get<String>(reader, "Telefono3");
                        be.Celular1 = DBValue.Get<String>(reader, "Celular1");
                        be.Celular2 = DBValue.Get<String>(reader, "Celular2");
                        be.Celular3 = DBValue.Get<String>(reader, "Celular3");
                        be.Fax = DBValue.Get<String>(reader, "Fax");
                        be.TipoDocumento = DBValue.Get<String>(reader, "TipoDocumento");
                        be.Documento = DBValue.Get<String>(reader, "Documento");
                        be.DocumentoFiscal = DBValue.Get<String>(reader, "DocumentoFiscal");
                        be.EsCliente = DBValue.Get<String>(reader, "EsCliente");
                        be.EsEmpleado = DBValue.Get<String>(reader, "EsEmpleado");
                        be.EsProveedor = DBValue.Get<String>(reader, "EsProveedor");
                        be.EsOtro = DBValue.Get<String>(reader, "EsOtro");
                        be.ClasePersona = DBValue.Get<String>(reader, "ClasePersona");
                        be.IdGrupo = DBValue.Get<Int32>(reader, "IdGrupo");
                        be.CodigoBarras = DBValue.Get<String>(reader, "CodigoBarras");
                        be.Estado = DBValue.Get<String>(reader, "Estado");
                        be.UsuarioCreacion = DBValue.Get<String>(reader, "UsuarioCreacion");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        be.UsuarioModificacion = DBValue.Get<String>(reader, "UsuarioModificacion");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        be.IdPaisNacimiento = DBValue.Get<Int32>(reader, "IdPaisNacimiento");
                        be.IdDepartamentoNacimiento = DBValue.Get<Int32>(reader, "IdDepartamentoNacimiento");
                        be.IdProvinciaNacimiento = DBValue.Get<Int32>(reader, "IdProvinciaNacimiento");
                        be.LugarNacimiento = DBValue.Get<String>(reader, "LugarNacimiento");
                        be.NacionalidadMaterna = DBValue.Get<String>(reader, "NacionalidadMaterna");
                        be.NacionalidadJuridica = DBValue.Get<String>(reader, "NacionalidadJuridica");
                        be.CodigoLD = DBValue.Get<String>(reader, "CodigoLD");
                        be.TipoLicenciaConducir = DBValue.Get<String>(reader, "TipoLicenciaConducir");
                        be.NumeroLicencia = DBValue.Get<String>(reader, "NumeroLicencia");
                        be.FechaExpiracionLicencia = DBValue.Get<DateTime>(reader, "FechaExpiracionLicencia") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaExpiracionLicencia");
                        be.NombreEmergencia1 = DBValue.Get<String>(reader, "NombreEmergencia1");
                        be.NombreEmergencia2 = DBValue.Get<String>(reader, "NombreEmergencia2");
                        be.DireccionEmergencia1 = DBValue.Get<String>(reader, "DireccionEmergencia1");
                        be.DireccionEmergencia2 = DBValue.Get<String>(reader, "DireccionEmergencia2");
                        be.TelefonoEmergencia1 = DBValue.Get<String>(reader, "TelefonoEmergencia1");
                        be.TelefonoEmergencia2 = DBValue.Get<String>(reader, "TelefonoEmergencia2");
                        be.ParentescoEmergencia1 = DBValue.Get<String>(reader, "ParentescoEmergencia1");
                        be.ParentescoEmergencia2 = DBValue.Get<String>(reader, "ParentescoEmergencia2");
                        be.CelularEmergencia1 = DBValue.Get<String>(reader, "CelularEmergencia1");
                        be.CelularEmergencia2 = DBValue.Get<String>(reader, "CelularEmergencia2");
                        be.PoseeAuto = DBValue.Get<String>(reader, "PoseeAuto");

                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }
        /// <summary>
        /// Método Inserta 
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEPersona Insertar(BEPersona pbe)
        {
            BEPersona be = new BEPersona();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Insertar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@as_TransaccionSpring", DbType.String, be.TransaccionSpring);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoPersona", DbType.String, pbe.CodigoPersona);
                sqlDB.AddInParameter(dbCmd, "@as_ApellidoPaterno", DbType.String, pbe.ApellidoPaterno);
                sqlDB.AddInParameter(dbCmd, "@as_ApellidoMaterno", DbType.String, pbe.ApellidoMaterno);
                sqlDB.AddInParameter(dbCmd, "@as_Nombres", DbType.String, pbe.Nombres);
                sqlDB.AddInParameter(dbCmd, "@as_NombreCompleto", DbType.String, pbe.NombreCompleto);
                sqlDB.AddInParameter(dbCmd, "@as_NombreBusqueda", DbType.String, pbe.NombreBusqueda);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaNacimiento", DbType.DateTime, pbe.FechaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_Sexo", DbType.String, pbe.Sexo);
                sqlDB.AddInParameter(dbCmd, "@as_Nacionalidad", DbType.String, pbe.Nacionalidad);
                sqlDB.AddInParameter(dbCmd, "@as_EstadoCivil", DbType.String, pbe.EstadoCivil);                
                sqlDB.AddInParameter(dbCmd, "@as_CorreoElectronico", DbType.String, pbe.CorreoElectronico);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono1", DbType.String, pbe.Telefono1);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono2", DbType.String, pbe.Telefono2);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono3", DbType.String, pbe.Telefono3);
                sqlDB.AddInParameter(dbCmd, "@as_Celular1", DbType.String, pbe.Celular1);
                sqlDB.AddInParameter(dbCmd, "@as_Celular2", DbType.String, pbe.Celular2);
                sqlDB.AddInParameter(dbCmd, "@as_Celular3", DbType.String, pbe.Celular3);
                sqlDB.AddInParameter(dbCmd, "@as_Fax", DbType.String, pbe.Fax);
                sqlDB.AddInParameter(dbCmd, "@as_TipoDocumento", DbType.String, pbe.TipoDocumento);
                sqlDB.AddInParameter(dbCmd, "@as_Documento", DbType.String, pbe.Documento);
                sqlDB.AddInParameter(dbCmd, "@as_DocumentoFiscal", DbType.String, pbe.DocumentoFiscal);
                sqlDB.AddInParameter(dbCmd, "@as_EsCliente", DbType.String, pbe.EsCliente);
                sqlDB.AddInParameter(dbCmd, "@as_EsProveedor", DbType.String, pbe.EsProveedor);
                sqlDB.AddInParameter(dbCmd, "@as_EsEmpleado", DbType.String, pbe.EsEmpleado);
                sqlDB.AddInParameter(dbCmd, "@as_EsOtro", DbType.String, pbe.EsOtro);
                sqlDB.AddInParameter(dbCmd, "@as_ClasePersona", DbType.String, pbe.ClasePersona);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupo", DbType.Int32, pbe.IdGrupo);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoBarras", DbType.String, pbe.CodigoBarras);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPaisNacimiento", DbType.Int32, pbe.IdPaisNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoNacimiento", DbType.Int32, pbe.IdDepartamentoNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvinciaNacimiento", DbType.Int32, pbe.IdProvinciaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_LugarNacimiento", DbType.String, pbe.LugarNacimiento);                
                sqlDB.AddInParameter(dbCmd, "@as_NacionalidadMaterna", DbType.String, pbe.NacionalidadMaterna);
                sqlDB.AddInParameter(dbCmd, "@as_NacionalidadJuridica", DbType.String, pbe.NacionalidadJuridica);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoLD", DbType.String, pbe.CodigoLD);
                sqlDB.AddInParameter(dbCmd, "@as_TipoLicenciaConducir", DbType.String, pbe.TipoLicenciaConducir);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroLicencia", DbType.String, pbe.NumeroLicencia);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionLicencia", DbType.DateTime, pbe.FechaExpiracionLicencia);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia1", DbType.String, pbe.NombreEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia2", DbType.String, pbe.NombreEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia1", DbType.String, pbe.DireccionEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia2", DbType.String, pbe.DireccionEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia1", DbType.String, pbe.TelefonoEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia2", DbType.String, pbe.TelefonoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia1", DbType.String, pbe.ParentescoEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia2", DbType.String, pbe.ParentescoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia1", DbType.String, pbe.CelularEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia2", DbType.String, pbe.CelularEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_PoseeAuto", DbType.String, pbe.PoseeAuto);
                
                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdPersona = DBValue.Get<int>(reader, "IdPersona");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta 
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEPersona InsertarSpring(BEPersona pbe)
        {
            BEPersona be = new BEPersona();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Insertar_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdPersona", DbType.Int32, pbe.IdPersona);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoPersona", DbType.String, pbe.CodigoPersona);
                sqlDB.AddInParameter(dbCmd, "@as_ApellidoPaterno", DbType.String, pbe.ApellidoPaterno);
                sqlDB.AddInParameter(dbCmd, "@as_ApellidoMaterno", DbType.String, pbe.ApellidoMaterno);
                sqlDB.AddInParameter(dbCmd, "@as_Nombres", DbType.String, pbe.Nombres);
                sqlDB.AddInParameter(dbCmd, "@as_NombreCompleto", DbType.String, pbe.NombreCompleto);
                sqlDB.AddInParameter(dbCmd, "@as_NombreBusqueda", DbType.String, pbe.NombreBusqueda);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaNacimiento", DbType.DateTime, pbe.FechaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_Sexo", DbType.String, pbe.Sexo);
                sqlDB.AddInParameter(dbCmd, "@as_Nacionalidad", DbType.String, pbe.Nacionalidad);
                sqlDB.AddInParameter(dbCmd, "@as_EstadoCivil", DbType.String, pbe.EstadoCivil);
                sqlDB.AddInParameter(dbCmd, "@as_CorreoElectronico", DbType.String, pbe.CorreoElectronico);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono1", DbType.String, pbe.Telefono1);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono2", DbType.String, pbe.Telefono2);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono3", DbType.String, pbe.Telefono3);
                sqlDB.AddInParameter(dbCmd, "@as_Celular1", DbType.String, pbe.Celular1);
                sqlDB.AddInParameter(dbCmd, "@as_Celular2", DbType.String, pbe.Celular2);
                sqlDB.AddInParameter(dbCmd, "@as_Celular3", DbType.String, pbe.Celular3);
                sqlDB.AddInParameter(dbCmd, "@as_Fax", DbType.String, pbe.Fax);
                sqlDB.AddInParameter(dbCmd, "@as_TipoDocumento", DbType.String, pbe.TipoDocumento);
                sqlDB.AddInParameter(dbCmd, "@as_Documento", DbType.String, pbe.Documento);
                sqlDB.AddInParameter(dbCmd, "@as_DocumentoFiscal", DbType.String, pbe.DocumentoFiscal);
                sqlDB.AddInParameter(dbCmd, "@as_EsCliente", DbType.String, pbe.EsCliente);
                sqlDB.AddInParameter(dbCmd, "@as_EsProveedor", DbType.String, pbe.EsProveedor);
                sqlDB.AddInParameter(dbCmd, "@as_EsEmpleado", DbType.String, pbe.EsEmpleado);
                sqlDB.AddInParameter(dbCmd, "@as_EsOtro", DbType.String, pbe.EsOtro);
                sqlDB.AddInParameter(dbCmd, "@as_ClasePersona", DbType.String, pbe.ClasePersona);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupo", DbType.Int32, pbe.IdGrupo);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoBarras", DbType.String, pbe.CodigoBarras);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPaisNacimiento", DbType.Int32, pbe.IdPaisNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoNacimiento", DbType.Int32, pbe.IdDepartamentoNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvinciaNacimiento", DbType.Int32, pbe.IdProvinciaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_LugarNacimiento", DbType.String, pbe.LugarNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_NacionalidadMaterna", DbType.String, pbe.NacionalidadMaterna);
                sqlDB.AddInParameter(dbCmd, "@as_NacionalidadJuridica", DbType.String, pbe.NacionalidadJuridica);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoLD", DbType.String, pbe.CodigoLD);
                sqlDB.AddInParameter(dbCmd, "@as_TipoLicenciaConducir", DbType.String, pbe.TipoLicenciaConducir);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroLicencia", DbType.String, pbe.NumeroLicencia);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionLicencia", DbType.DateTime, pbe.FechaExpiracionLicencia);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia1", DbType.String, pbe.NombreEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia2", DbType.String, pbe.NombreEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia1", DbType.String, pbe.DireccionEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia2", DbType.String, pbe.DireccionEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia1", DbType.String, pbe.TelefonoEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia2", DbType.String, pbe.TelefonoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia1", DbType.String, pbe.ParentescoEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia2", DbType.String, pbe.ParentescoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia1", DbType.String, pbe.CelularEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia2", DbType.String, pbe.CelularEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_PoseeAuto", DbType.String, pbe.PoseeAuto);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuentaLocal", DbType.String, pbe.TipoCuenta);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBanco", DbType.String, pbe.IdBanco);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuenta", DbType.String, pbe.NumeroCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_Direccion", DbType.String, pbe.DescripcionDireccion);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionReferencia", DbType.String, pbe.DireccionReferencia);                
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamento", DbType.Int32 , pbe.IdDepartamento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvincia", DbType.Int32, pbe.IdProvincia);
                
                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdPersona = DBValue.Get<int>(reader, "IdPersona");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

         //<summary>
         //Método Actualiza 
         //</summary>
         //<returns>Devuelve una entidad</returns>
        public BEPersona Actualizar(BEPersona pbe)
        {
            BEPersona be = new BEPersona();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Actualizar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdPersona", DbType.Int32, pbe.IdPersona);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoPersona", DbType.String, pbe.CodigoPersona);
                sqlDB.AddInParameter(dbCmd, "@as_ApellidoPaterno", DbType.String, pbe.ApellidoPaterno);
                sqlDB.AddInParameter(dbCmd, "@as_ApellidoMaterno", DbType.String, pbe.ApellidoMaterno);
                sqlDB.AddInParameter(dbCmd, "@as_Nombres", DbType.String, pbe.Nombres);
                sqlDB.AddInParameter(dbCmd, "@as_NombreCompleto", DbType.String, pbe.NombreCompleto);
                sqlDB.AddInParameter(dbCmd, "@as_NombreBusqueda", DbType.String, pbe.NombreBusqueda);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaNacimiento", DbType.DateTime, pbe.FechaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_Sexo", DbType.String, pbe.Sexo);
                sqlDB.AddInParameter(dbCmd, "@as_Nacionalidad", DbType.String, pbe.Nacionalidad);
                sqlDB.AddInParameter(dbCmd, "@as_EstadoCivil", DbType.String, pbe.EstadoCivil);
                sqlDB.AddInParameter(dbCmd, "@as_CorreoElectronico", DbType.String, pbe.CorreoElectronico);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono1", DbType.String, pbe.Telefono1);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono2", DbType.String, pbe.Telefono2);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono3", DbType.String, pbe.Telefono3);
                sqlDB.AddInParameter(dbCmd, "@as_Celular1", DbType.String, pbe.Celular1);
                sqlDB.AddInParameter(dbCmd, "@as_Celular2", DbType.String, pbe.Celular2);
                sqlDB.AddInParameter(dbCmd, "@as_Celular3", DbType.String, pbe.Celular3);
                sqlDB.AddInParameter(dbCmd, "@as_Fax", DbType.String, pbe.Fax);
                sqlDB.AddInParameter(dbCmd, "@as_TipoDocumento", DbType.String, pbe.TipoDocumento);
                sqlDB.AddInParameter(dbCmd, "@as_Documento", DbType.String, pbe.Documento);
                sqlDB.AddInParameter(dbCmd, "@as_DocumentoFiscal", DbType.String, pbe.DocumentoFiscal);
                sqlDB.AddInParameter(dbCmd, "@as_EsCliente", DbType.String, pbe.EsCliente);
                sqlDB.AddInParameter(dbCmd, "@as_EsProveedor", DbType.String, pbe.EsProveedor);
                sqlDB.AddInParameter(dbCmd, "@as_EsEmpleado", DbType.String, pbe.EsEmpleado);
                sqlDB.AddInParameter(dbCmd, "@as_EsOtro", DbType.String, pbe.EsOtro);
                sqlDB.AddInParameter(dbCmd, "@as_ClasePersona", DbType.String, pbe.ClasePersona);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupo", DbType.Int32, pbe.IdGrupo);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoBarras", DbType.String, pbe.CodigoBarras);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPaisNacimiento", DbType.Int32, pbe.IdPaisNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoNacimiento", DbType.Int32, pbe.IdDepartamentoNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvinciaNacimiento", DbType.Int32, pbe.IdProvinciaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_LugarNacimiento", DbType.String, pbe.LugarNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_NacionalidadMaterna", DbType.String, pbe.NacionalidadMaterna);
                sqlDB.AddInParameter(dbCmd, "@as_NacionalidadJuridica", DbType.String, pbe.NacionalidadJuridica);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoLD", DbType.String, pbe.CodigoLD);
                sqlDB.AddInParameter(dbCmd, "@as_TipoLicenciaConducir", DbType.String, pbe.TipoLicenciaConducir);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroLicencia", DbType.String, pbe.NumeroLicencia);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionLicencia", DbType.DateTime, pbe.FechaExpiracionLicencia);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia1", DbType.String, pbe.NombreEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia2", DbType.String, pbe.NombreEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia1", DbType.String, pbe.DireccionEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia2", DbType.String, pbe.DireccionEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia1", DbType.String, pbe.TelefonoEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia2", DbType.String, pbe.TelefonoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia1", DbType.String, pbe.ParentescoEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia2", DbType.String, pbe.ParentescoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia1", DbType.String, pbe.CelularEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia2", DbType.String, pbe.CelularEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_PoseeAuto", DbType.String, pbe.PoseeAuto);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdPersona = DBValue.Get<Int32>(reader, "IdPersona");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        be.IdSpring = DBValue.Get<Int32>(reader, "IdSpring");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        //<summary>
        //Método Actualiza 
        //</summary>
        //<returns>Devuelve una entidad</returns>
        public BEPersona ActualizarSpring(BEPersona pbe)
        {
            BEPersona be = new BEPersona();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Actualizar_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdPersona", DbType.Int32, pbe.IdPersona);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoPersona", DbType.String, pbe.CodigoPersona);
                sqlDB.AddInParameter(dbCmd, "@as_ApellidoPaterno", DbType.String, pbe.ApellidoPaterno);
                sqlDB.AddInParameter(dbCmd, "@as_ApellidoMaterno", DbType.String, pbe.ApellidoMaterno);
                sqlDB.AddInParameter(dbCmd, "@as_Nombres", DbType.String, pbe.Nombres);
                sqlDB.AddInParameter(dbCmd, "@as_NombreCompleto", DbType.String, pbe.NombreCompleto);
                sqlDB.AddInParameter(dbCmd, "@as_NombreBusqueda", DbType.String, pbe.NombreBusqueda);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaNacimiento", DbType.DateTime, pbe.FechaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_Sexo", DbType.String, pbe.Sexo);
                sqlDB.AddInParameter(dbCmd, "@as_Nacionalidad", DbType.String, pbe.Nacionalidad);
                sqlDB.AddInParameter(dbCmd, "@as_EstadoCivil", DbType.String, pbe.EstadoCivil);                
                sqlDB.AddInParameter(dbCmd, "@as_CorreoElectronico", DbType.String, pbe.CorreoElectronico);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono1", DbType.String, pbe.Telefono1);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono2", DbType.String, pbe.Telefono2);
                sqlDB.AddInParameter(dbCmd, "@as_Telefono3", DbType.String, pbe.Telefono3);
                sqlDB.AddInParameter(dbCmd, "@as_Celular1", DbType.String, pbe.Celular1);
                sqlDB.AddInParameter(dbCmd, "@as_Celular2", DbType.String, pbe.Celular2);
                sqlDB.AddInParameter(dbCmd, "@as_Celular3", DbType.String, pbe.Celular3);
                sqlDB.AddInParameter(dbCmd, "@as_Fax", DbType.String, pbe.Fax);
                sqlDB.AddInParameter(dbCmd, "@as_TipoDocumento", DbType.String, pbe.TipoDocumento);
                sqlDB.AddInParameter(dbCmd, "@as_Documento", DbType.String, pbe.Documento);
                sqlDB.AddInParameter(dbCmd, "@as_DocumentoFiscal", DbType.String, pbe.DocumentoFiscal);
                sqlDB.AddInParameter(dbCmd, "@as_EsCliente", DbType.String, pbe.EsCliente);
                sqlDB.AddInParameter(dbCmd, "@as_EsProveedor", DbType.String, pbe.EsProveedor);
                sqlDB.AddInParameter(dbCmd, "@as_EsEmpleado", DbType.String, pbe.EsEmpleado);
                sqlDB.AddInParameter(dbCmd, "@as_EsOtro", DbType.String, pbe.EsOtro);
                sqlDB.AddInParameter(dbCmd, "@as_ClasePersona", DbType.String, pbe.ClasePersona);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupo", DbType.Int32, pbe.IdGrupo);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoBarras", DbType.String, pbe.CodigoBarras);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPaisNacimiento", DbType.Int32, pbe.IdPaisNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoNacimiento", DbType.Int32, pbe.IdDepartamentoNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvinciaNacimiento", DbType.Int32, pbe.IdProvinciaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@as_LugarNacimiento", DbType.String, pbe.LugarNacimiento);                
                sqlDB.AddInParameter(dbCmd, "@as_NacionalidadMaterna", DbType.String, pbe.NacionalidadMaterna);
                sqlDB.AddInParameter(dbCmd, "@as_NacionalidadJuridica", DbType.String, pbe.NacionalidadJuridica);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoLD", DbType.String, pbe.CodigoLD);
                sqlDB.AddInParameter(dbCmd, "@as_TipoLicenciaConducir", DbType.String, pbe.TipoLicenciaConducir);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroLicencia", DbType.String, pbe.NumeroLicencia);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionLicencia", DbType.DateTime, pbe.FechaExpiracionLicencia);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia1", DbType.String, pbe.NombreEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia2", DbType.String, pbe.NombreEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia1", DbType.String, pbe.DireccionEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia2", DbType.String, pbe.DireccionEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia1", DbType.String, pbe.TelefonoEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia2", DbType.String, pbe.TelefonoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia1", DbType.String, pbe.ParentescoEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia2", DbType.String, pbe.ParentescoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia1", DbType.String, pbe.CelularEmergencia1);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia2", DbType.String, pbe.CelularEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_PoseeAuto", DbType.String, pbe.PoseeAuto);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuentaLocal", DbType.String, pbe.TipoCuenta);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBanco", DbType.String, pbe.IdBanco);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuenta", DbType.String, pbe.NumeroCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_Direccion", DbType.String, pbe.DescripcionDireccion );
                sqlDB.AddInParameter(dbCmd, "@as_DireccionReferencia", DbType.String, pbe.DireccionReferencia);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamento", DbType.Int32, pbe.IdDepartamento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvincia", DbType.Int32, pbe.IdProvincia);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdPersona = DBValue.Get<Int32>(reader, "IdPersona");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        
         //<summary>
         //Método Elimina
         //</summary>
         //<returns>Devuelve una entidad</returns>
        public BEPersona Eliminar(BEPersona pbe)
        {
            BEPersona be = new BEPersona();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Eliminar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdPersona", DbType.Int32, pbe.IdPersona);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaModificacion", DbType.DateTime, pbe.FechaModificacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdPersona = DBValue.Get<Int32>(reader, "IdPersona");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        //<summary>
        //Método Elimina
        //</summary>
        //<returns>Devuelve una entidad</returns>
        public BEPersona EliminarSpring(BEPersona pbe)
        {
            BEPersona be = new BEPersona();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Persona_Eliminar_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdPersona", DbType.Int32, pbe.IdPersona);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaModificacion", DbType.DateTime, pbe.FechaModificacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdPersona = DBValue.Get<Int32>(reader, "IdPersona");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        //<summary>
        //Método Elimina
        //</summary>
        //<returns>Devuelve una entidad</returns>
        public BEPersona ActualizarUnidadReplicacionSpring(BEPersona pbe)
        {
            BEPersona be = new BEPersona();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_SPRING_SY_UnidadReplicacion");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdPersona", DbType.Int32, pbe.IdPersona);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdPersona = DBValue.Get<Int32>(reader, "IdPersona");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        #endregion  Members
    }
}
